﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;

namespace EFCore
{
    public class MyDesignTimeDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
    {
        //在多项目的环境下执行 EF Core 的数据库迁移有很多特殊的要求
        //容易出错，因为数据库连接在其它项目中
        //可以通过 IDesignTimeDbContextFactory 接口来解决这个问题
        //当项目中存在一个 IDesignTimeDbContextFactory 接口的实现类的时候，
        //数据库迁移工具就会调用这个实现类的 CreateDbContext 方法来获取上下文对象，
        //然后迁移工具会使用这个上下文对象来连接数据库
        //此代码只用于开发环境
        //生产环境可以去掉此代码
        public MyDbContext CreateDbContext(string[] args)
        {
            DbContextOptionsBuilder<MyDbContext> builder = new DbContextOptionsBuilder<MyDbContext>();
            string ConnStr = "Data Source=LRJ;Initial Catalog=BookTest;Integrated Security=True;Trust Server Certificate=True";
            builder.UseSqlServer(ConnStr);
            MyDbContext dbContext = new MyDbContext(builder.Options);
            return dbContext;
        }
    }
}
